package com.xiaochi.practice.api.common;

import lombok.Data;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;

/**
 * 分页响应实体
 * @author zqx
 * @since 2024/8/16
 */
@Data
public class PageResult<T> implements Serializable {

    private Integer pageNo = 1;

    private Integer pageSize = 20;

    private Integer total = 0;

    private Integer totalPage = 0;

    private List<T> result = Collections.emptyList();

    private Integer start = 1;

    private Integer end = 0;

    public void setRecords(List<T> result) {
        this.result = result;
        if(result != null && result.size() > 0){
            setTotal(result.size());
        }
    }

    public void setTotal(Integer total) {
        this.total = total;
        if (this.pageSize > 0){
            this.totalPage = (total/this.pageSize) + (total % this.pageSize == 0 ? 0 : 1);
        }else {
            this.totalPage = 0;
        }
        this.start = (this.pageSize > 0 ? (this.pageNo -1 ) * this.pageSize : 0 ) + 1;
        this.end = (this.start -1 + this.pageSize * (this.pageSize > 0 ? 1 : 0));
    }

    public void setPageSize(Integer pageSize){
        if(pageSize > 0){
            this.pageSize = pageSize;
        }
    }

    public void setPageNo(Integer pageNo){
        if(pageNo > 0){
            this.pageNo = pageNo;
        }
    }
}
